# 使用官方 Node.js 镜像作为构建阶段基础镜像
FROM node:18-alpine AS builder

# 设置工作目录
WORKDIR /app

# 复制项目的 package.json 和 pnpm-lock.yaml 到容器中
COPY package.json pnpm-lock.yaml ./

# 安装 pnpm
RUN npm install -g pnpm

# 安装依赖
RUN pnpm install

# 复制项目的所有文件到容器中
COPY . .

# 构建应用
RUN pnpm run build


# 使用轻量级镜像作为生产阶段的基础镜像
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 从构建阶段复制构建后的文件到生产阶段
COPY --from=builder /app/dist ./dist

# 安装 serve 用于提供静态文件
RUN pnpm install -g serve

# 暴露应用的端口
EXPOSE 80

# 使用 serve 提供构建后的静态文件，并监听 80 端口
CMD ["serve", "-s", "dist", "-l", "80"]
